package edu.whut.mall.admin.service;

import edu.whut.mall.admin.domain.GroupBuyRuleParams;
import edu.whut.mall.admin.domain.ProductParams;
import edu.whut.mall.admin.domain.ProductSearchParams;
import edu.whut.mall.admin.vo.ProductVo;
import edu.whut.mall.common.api.CommonPage;

/**
 * @program: d9lab-mall
 * @description: 商品服务
 * @author: Wayne
 * @create: 2020-05-05 11:41
 **/
public interface IProductService {
    /**
     * 新增一個商品
     * @param productParams
     * @return
     */
    Integer insertOneProduct(ProductParams productParams);

    /**
     * 更新一个产品
     * @param productId
     * @param productParams
     * @return
     */
    Integer updateOneProduct(Long productId, ProductParams productParams);

    /**
     * 产品上架下架
     * @param productId
     * @param status
     * @return
     */
    Integer setProductStatus(Long productId,Integer status);

    /**
     * @Description 产品审核状态设置
     * @param productId
     * @param  status
     * @return
     * @Author lvfanbing
     * @Date 2020/10/22 16:31
     */
    Integer setProductVerifyStatus(Long productId, Integer status);

    /**
     * 根据商品id获取商品详情
     * @param productId
     * @return
     */
    ProductVo getProductDetailVoByProductId(Long productId);

    /**
     * 根据商品分类查询商品列表
     * @param categoryId
     * @return
     */
   CommonPage<ProductVo> listProductVosByCategoryId(Long categoryId, Integer pageNum, Integer size);

    /**
     * 获取全部商品
     * @param pageNum
     * @param size
     * @return
     */
   CommonPage<ProductVo> listMerchantOwnProductVos(Integer pageNum, Integer size);

    /**
     * @Description
     * @param productSearchParams
     * @param pageNum
     * @param size
     * @return
     * @Author lvfanbing
     * @Date 2020/10/20 14:44
     */
    CommonPage<ProductVo> listProductVosByCondition(ProductSearchParams productSearchParams, Integer pageNum, Integer size);

    /**
     * 删除一个商品
     * @param productId
     * @return
     */
   Integer deleteOneProduct(Long productId);

    /**
     * @Description 根据商家id删除商品
     * @param merchantId
     * @return
     * @Author lvfanbing
     * @Date 2020/10/13 15:31
     */
    Integer deleteProductByMerchantId(Long merchantId);

    /**
     * @Description 为商品分配团购规则
     * @param groupBuyRuleParams
     * @return
     * @Author lvfanbing
     * @Date 2020/11/18 20:41
     */
    Integer assignGroupBuyRuleToProduct(GroupBuyRuleParams groupBuyRuleParams);
}
